#include "jni.h"
#include <stdio.h>
#include <stdlib.h>
#include "cn_zxkxz_util_gpio_gpio.h"
#include <wiringPi.h>

JNIEXPORT jint JNICALL Java_cn_zxkxz_util_gpio_gpio_wiringPiSetup(JNIEnv *env, jobject obj)
{
    jint data = (jint)wiringPiSetup();
    return data;
}

JNIEXPORT jint JNICALL Java_cn_zxkxz_util_gpio_gpio_wiringPiSetupSys(JNIEnv *env, jobject obj)
{
    jint data = (jint)wiringPiSetupSys();
    return data;
}

JNIEXPORT jint JNICALL Java_cn_zxkxz_util_gpio_gpio_wiringPiSetupGpio(JNIEnv *env, jobject obj)
{
    jint data = (jint)wiringPiSetupGpio();
    return data;
}

JNIEXPORT jint JNICALL Java_cn_zxkxz_util_gpio_gpio_wiringPiSetupPhys(JNIEnv *env, jobject obj)
{
    jint data = (jint)wiringPiSetupPhys();
    return data;
}

JNIEXPORT void JNICALL Java_cn_zxkxz_util_gpio_gpio_pinModeAlt(JNIEnv *env, jobject obj, jint pin, jint mode)
{
    pinMode((int)pin, (int)mode);
}

JNIEXPORT void JNICALL Java_cn_zxkxz_util_gpio_gpio_pinMode(JNIEnv *env, jobject obj, jint pin, jint mode)
{
    pinMode((int)pin, (int)mode);
}

JNIEXPORT void JNICALL Java_cn_zxkxz_util_gpio_gpio_pullUpDnControl(JNIEnv *env, jobject obj, jint pin, jint pud)
{
    pullUpDnControl((int)pin, (int)pud);
}

JNIEXPORT jint JNICALL Java_cn_zxkxz_util_gpio_gpio_digitalRead(JNIEnv *env, jobject obj, jint pin)
{
    jint data = (jint)digitalRead((int)pin);
    return data;
}

JNIEXPORT void JNICALL Java_cn_zxkxz_util_gpio_gpio_digitalWrite(JNIEnv *env, jobject obj, jint pin, jint val)
{
    digitalWrite((int)pin, (int)val);
}

JNIEXPORT void JNICALL Java_cn_zxkxz_util_gpio_gpio_pwmWrite(JNIEnv *env, jobject obj, jint pin, jint val)
{
    pwmWrite((int)pin, (int)val);
}

JNIEXPORT jint JNICALL Java_cn_zxkxz_util_gpio_gpio_analogRead(JNIEnv *env, jobject obj, jint pin)
{
    jint data = (jint)analogRead((int)pin);
    return data;
}

JNIEXPORT void JNICALL Java_cn_zxkxz_util_gpio_gpio_analogWrite(JNIEnv *env, jobject obj, jint pin, jint val)
{
    analogWrite((int)pin, (int)val);
}
